###################################################
# U盘操作
###################################################
import subprocess


def format_usb_drive(drive_letter, fmt):
    """
    格式化 U 盘为 exFAT 格式
    使用实例：format_usb_drive("E:")
    """
    if fmt not in ["exFAT", "FAT32"]:
        return -1

    print(fmt)
    try:
        # 格式化 U 盘
        command = f'echo y | format {drive_letter} /FS:{fmt} /Q /V:新加卷'
        subprocess.run(command, shell=True, check=False)

        print(f"{drive_letter} 已成功格式化为 exFAT 格式。")
        return 0
    except subprocess.CalledProcessError as e:
        print(f"格式化失败：{e}")
        return -1


def get_usb_drives():
    """
    获取所有连接的 U 盘的盘符和文件系统格式
    """
    try:
        # 使用 subprocess 调用 WMIC 命令获取磁盘信息
        result = subprocess.run(
            ['wmic', 'logicaldisk', 'where', 'drivetype=2', 'get', 'deviceid,filesystem,freespace,size'],
            capture_output=True, text=True, check=True
        )

        # 解析输出
        drives = []
        lines = result.stdout.strip().split('\n')
        for line in lines[1:]:  # 跳过标题行
            parts = line.split()
            if len(parts) == 4:
                drive_info = {
                    'device': parts[0],
                    'fstype': parts[1],
                    'fssize': parts[2],
                    'size': parts[3]
                }
                drives.append(drive_info)

        return drives

    except subprocess.CalledProcessError as e:
        print(f"命令执行失败: {e}")
        return []

